<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /*
         属性名
             -通过属性名就是一个字符串，所以属性名可以是任何值，没有什么特殊要求
              但是如果你的属性名太特殊了，不能直接使用，需要使用[]来设置
              虽然如此，但是我们还是强烈建议属性名也按照标识符的规范命名
             - 也可以使用符号(Symbol)作为属性名,获取这种属性时也必须使用Symbol获取
              使用symbol添加的属性，通常是那么不希望被外界访问的属性
              使用[]操作属性时，可以使用变量。
        属性值
            - 对象的属性值可以是任意的数据类型

     */
    let obj = {};
    obj["fds@%!"] = 30;
    let id = Symbol("1");
    obj[id] = 123;
    var ddd = "2";
    obj[ddd] = "fds123";
    // console.log(obj["fds@%!"], obj);
    // console.log(obj[id]);
    console.log(obj[ddd],obj);
  
    /* 
        in 运算符
            -用来检查对象中是否含有某个属性
            -语法 属性名 in obj
            - 如果有返回true  没有返回false
        缺点： 不仅在本身对象上查看，也会往对象的原型链上去查找
    */
    Object.prototype.xx =  20 //w  加上之后 下面一行代码 返回true
    console.log('xx' in obj);
  </script>
</html>
